﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// DBHelper 的摘要说明
/// </summary>
public class DBHelper
{
    //创建连接字符串
    public static string connStr = "Data Source=.;Initial Catalog=GirlCMS;Integrated Security=True";
    //作用：执行增（insert）删（delete）改（update）的方法
    //参数：strSql ，执行的增删改语句
    //返回：返回是否执行成功
    public static bool ExecuteNonQuery(string sql)
    {
        //第一步，创建连接对象，并打开连接（牵水管）
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        //第二步，创建命令对象，包含发送命令（安装水龙头）
        SqlCommand cmd = new SqlCommand(sql, conn);
        //第三步，执行返回结果（拧开水龙头，水哗哗流出来）
        int ret = cmd.ExecuteNonQuery();//受影响的行数，如果返回值大于0表示执行成功
        return ret > 0;
    }
    //作用：执行断开连接模式查询方法。通常与DataGridView控件一起使用
    //参数：执行的SQL查询语句
    //返回：返回查询后的结果集
    public static DataTable GetDataTable(string sql)
    {
        //第一步，创建连接对象，并打开连接（牵水管）
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();//打开
        //第二步，创建命令对象，包含发送命令（安装水龙头）
        SqlCommand cmd = new SqlCommand(sql, conn);
        //第三步，创建内存池（蓄水池）
        DataTable dt = new DataTable();
        //第四步，创建适配器，连接内存池与取到的数据（水龙头与蓄水池之间牵一条水管，将水龙头里的水填充到蓄水池）
        SqlDataAdapter dap = new SqlDataAdapter(cmd);
        dap.Fill(dt);//将取到的数据填充到内存池
        return dt;
    }


    //执行聚合函数 返回聚合函数结果
    public static object ExecuteScalar(string sql)
    {
        //第一步，创建连接对象，并打开连接（牵水管）
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        //第二步，创建命令对象，包含发送命令（安装水龙头）
        SqlCommand cmd = new SqlCommand(sql, conn);
        //第三步，执行返回结果（拧开水龙头，水哗哗流出来）
        object ret = cmd.ExecuteScalar();//返回聚合函数结果
        return ret;
    }
    //执行存储过程，存储过程没有结果
    public static bool ExcuteProcedure(string proName, SqlParameter[] paras)
    {
        SqlConnection conn = new SqlConnection(connStr);
        conn.Open();
        SqlCommand cmd = new SqlCommand(proName, conn);
        cmd.CommandType = CommandType.StoredProcedure;
        for (int i = 0; i < paras.Length; i++)
        {
            cmd.Parameters.Add(paras[i]);
        }

        cmd.ExecuteNonQuery();
        return true;

    }
}